SPDX-FileCopyrightText: 2014 Manuel Leon Fanjul SPDX-FileCopyrightText: 2024 AlICe laboratory https://alicelab.be
SPDX-License-Identifier: GPL-3.0-or-later
BLENDER 2.71 Hash:9337574 Windows 8
import bpy
import random
import math
import mathutils
from mathutils import Vectorbpy.ops.object.select_all(action=’SELECT’) bpy.ops.object.delete(use_global=False)
"DEFINITIONS NECESSAIRES A LA CREATION DES CUBES"def Boite(o, p, q, r, s, t):
    bpy.ops.mesh.primitive_cube_add(location=(o, p, q))
    bpy.ops.transform.resize(value=(r, s, t))def Name(k):
    bpy.context.object.name = k
    bpy.context.object.data.name = kdef Join(i, j):
    SelectObjectContext(i)
    bpy.context.scene.objects[i].select = True
    SelectObjectContext(j)
    bpy.context.scene.objects[j].select = True
    bpy.ops.object.join()def Place_obj(obj, x=0, y=0, z=0):
    bpy.data.objects[obj].location = (x, y, z)def SelectObjectContext(erd):
    bpy.context.scene.objects[erd].select = True---------------------------------------------------Fonctions Cubes----------------------------------------------
print(
    "-----------------------------------------------Cub_Arete: 0 /6 ----------------------------------------------"
)def Cub_0(x=0, y=0, z=0):
    Boite(x + 1.65, y + 0, z + 0.15, 0.15, 1.8, 0.15)
    Name("Boite1")
    Boite(x + 0, y + -1.65, z + 0.15, 1.8, 0.15, 0.15)
    Name("Boite2")
    Join("Boite1", "Boite2")
    Boite(x + -1.65, y + 0, z + 0.15, 0.15, 1.8, 0.15)
    Name("Boite3")
    Join("Boite2", "Boite3")
    Boite(x + 1.65, y + 1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("Boite4")
    Join("Boite3", "Boite4")
    Boite(x + -1.65, y + 1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("Boite5")
    Join("Boite4", "Boite5")
    Boite(x + 1.65, y + -1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("Boite6")
    Join("Boite5", "Boite6")
    Boite(x + -1.65, y + -1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("Boite7")
    Join("Boite6", "Boite7")
    Boite(x + 0, y + 1.65, z + 3.45, 1.8, 0.15, 0.15)
    Name("Boite8")
    Join("Boite7", "Boite8")
    Boite(x + 1.65, y + 0, z + 3.45, 0.15, 1.8, 0.15)
    Name("Boite9")
    Join("Boite8", "Boite9")
    Boite(x + 0, y + -1.65, z + 3.45, 1.8, 0.15, 0.15)
    Name("Boite10")
    Join("Boite9", "Boite10")
    Boite(x + -1.65, y + 0, z + 3.45, 0.15, 1.8, 0.15)
    Name("Boite11")
    Join("Boite10", "Boite11")
    Boite(x + 0, y + 1.65, z + 0.15, 1.8, 0.15, 0.15)
    Name("Boite12")
    Join("Boite11", "Boite12")
    Name("Cub_0")Place_obj(‘Cub_0’,x,1.65+y,z)
    Name("CubeV")bpy.context.scene.cursor_location = mathutils.Vector((x, y, z)) bpy.ops.view3d.snap_selected_to_cursor(use_offset=False)
print(
    "-----------------------------------------------Cub_Toit: 1 /6 -------------------------------------------"
)def Cub_1(x=0, y=0, z=0):
    Boite(x + 0, y + 0, z + 3.45, 1.5, 1.5, 0.15)
    Name("Boite13")
    Boite(x + 1.65, y + 0, z + 0.15, 0.15, 1.8, 0.15)
    Name("Boite14")
    Join("Boite13", "Boite14")
    Boite(x + 0, y + -1.65, z + 0.15, 1.8, 0.15, 0.15)
    Name("Boite15")
    Join("Boite14", "Boite15")
    Boite(x + -1.65, y + 0, z + 0.15, 0.15, 1.8, 0.15)
    Name("Boite16")
    Join("Boite15", "Boite16")
    Boite(x + 1.65, y + 1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("Boite17")
    Join("Boite16", "Boite17")
    Boite(x + -1.65, y + 1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("Boite18")
    Join("Boite17", "Boite18")
    Boite(x + 1.65, y + -1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("Boite19")
    Join("Boite18", "Boite19")
    Boite(x + -1.65, y + -1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("Boite20")
    Join("Boite19", "Boite20")
    Boite(x + 0, y + 1.65, z + 3.45, 1.8, 0.15, 0.15)
    Name("Boite21")
    Join("Boite20", "Boite21")
    Boite(x + 1.65, y + 0, z + 3.45, 0.15, 1.8, 0.15)
    Name("Boite22")
    Join("Boite21", "Boite22")
    Boite(x + 0, y + -1.65, z + 3.45, 1.8, 0.15, 0.15)
    Name("Boite23")
    Join("Boite22", "Boite23")
    Boite(x + -1.65, y + 0, z + 3.45, 0.15, 1.8, 0.15)
    Name("Boite24")
    Join("Boite23", "Boite24")
    Boite(x + 0, y + 1.65, z + 0.15, 1.8, 0.15, 0.15)
    Name("Boite25")
    Join("Boite24", "Boite25")Name(‘Cub_1’) Place_obj(‘Cub_1’,x,1.65+y,z)
    Name("CubeV")bpy.context.scene.cursor_location = mathutils.Vector((x, y, z)) bpy.ops.view3d.snap_selected_to_cursor(use_offset=False)
print(
    "-----------------------------------------------Cub_Sol: 1 /6 ----------------------------------------------"
)def Cub_2(x=0, y=0, z=0):
    Boite(x + 0, y + 1.65, z + 0.15, 1.8, 0.15, 0.15)
    Name("Boi17")
    Boite(x + 1.65, y + 0, z + 0.15, 0.15, 1.8, 0.15)
    Name("Boi18")
    Join("Boi17", "Boi18")
    Boite(x + 0, y + -1.65, z + 0.15, 1.8, 0.15, 0.15)
    Name("Boi19")
    Join("Boi18", "Boi19")
    Boite(x + -1.65, y + 0, z + 0.15, 0.15, 1.8, 0.15)
    Name("Boi20")
    Join("Boi19", "Boi20")
    Boite(x + 1.65, y + 1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("Boi21")
    Join("Boi20", "Boi21")
    Boite(x + -1.65, y + 1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("Boi22")
    Join("Boi21", "Boi22")
    Boite(x + 1.65, y + -1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("Boi23")
    Join("Boi22", "Boi23")
    Boite(x + -1.65, y + -1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("Boi24")
    Join("Boi23", "Boi24")
    Boite(x + 0, y + 1.65, z + 3.45, 1.8, 0.15, 0.15)
    Name("Boi25")
    Join("Boi24", "Boi25")
    Boite(x + 1.65, y + 0, z + 3.45, 0.15, 1.8, 0.15)
    Name("Boi26")
    Join("Boi25", "Boi26")
    Boite(x + 0, y + -1.65, z + 3.45, 1.8, 0.15, 0.15)
    Name("Boi27")
    Join("Boi26", "Boi27")
    Boite(x + -1.65, y + 0, z + 3.45, 0.15, 1.8, 0.15)
    Name("Boi28")
    Join("Boi27", "Boi28")
    Boite(x + 0, y + 0, z + 0.15, 1.5, 1.5, 0.15)
    Name("Boi29")
    Join("Boi28", "Boi29")Name(‘Cub_2’) Place_obj(‘Cub_2’,x,y,z)
    Name("CubeV")bpy.context.scene.cursor_location = mathutils.Vector((x, y, z)) bpy.ops.view3d.snap_selected_to_cursor(use_offset=False)
print(
    "-----------------------------------------------Cub_ToFa: 2 /6 ----------------------------------------------"
)def Cub_3(x=0, y=0, z=0):
    Boite(x + 0, y + 1.65, 1.8, 1.8, 0.15, 1.8)
    Name("Bot1")
    Boite(x + 0, y + 0, z + 3.45, 1.5, 1.5, 0.15)
    Name("Bot2")
    Join("Bot1", "Bot2")
    Boite(x + 1.65, y + 0, z + 0.15, 0.15, 1.8, 0.15)
    Name("Bot3")
    Join("Bot2", "Bot3")
    Boite(x + 0, y + -1.65, z + 0.15, 1.8, 0.15, 0.15)
    Name("Bot4")
    Join("Bot3", "Bot4")
    Boite(x + -1.65, y + 0, z + 0.15, 0.15, 1.8, 0.15)
    Name("Bot5")
    Join("Bot4", "Bot5")
    Boite(x + 1.65, y + 1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("Bot6")
    Join("Bot5", "Bot6")
    Boite(x + -1.65, y + 1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("Bot7")
    Join("Bot6", "Bot7")
    Boite(x + 1.65, y + -1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("Bot8")
    Join("Bot7", "Bot8")
    Boite(x + -1.65, y + -1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("Bot9")
    Join("Bot8", "Bot9")
    Boite(x + 0, y + 1.65, z + 3.45, 1.8, 0.15, 0.15)
    Name("Bot10")
    Join("Bot9", "Bot10")
    Boite(x + 1.65, y + 0, z + 3.45, 0.15, 1.8, 0.15)
    Name("Bot11")
    Join("Bot10", "Bot11")
    Boite(x + 0, y + -1.65, z + 3.45, 1.8, 0.15, 0.15)
    Name("Bot12")
    Join("Bot11", "Bot12")
    Boite(x + -1.65, y + 0, z + 3.45, 0.15, 1.8, 0.15)
    Name("Bot13")
    Join("Bot12", "Bot13")
    Boite(x + 0, y + 1.65, z + 0.15, 1.8, 0.15, 0.15)
    Name("Bot14")
    Join("Bot13", "Bot14")Name(‘Cub_3’) Place_obj(‘Cub_3’,x,1.65+y,z)
    Name("CubeV")bpy.context.scene.cursor_location = mathutils.Vector((x, y, z)) bpy.ops.view3d.snap_selected_to_cursor(use_offset=False)
print(
    "-----------------------------------------------Cub_SolToit: 2 /6 ----------------------------------------------"
)def Cub_4(x=0, y=0, z=0):
    Boite(x + 0, y + 1.65, z + 0.15, 1.8, 0.15, 0.15)
    Name("Boix1")
    Boite(x + 1.65, y + 0, z + 0.15, 0.15, 1.8, 0.15)
    Name("Boix2")
    Join("Boix1", "Boix2")
    Boite(x + 0, y + -1.65, z + 0.15, 1.8, 0.15, 0.15)
    Name("Boix3")
    Join("Boix2", "Boix3")
    Boite(x + -1.65, y + 0, z + 0.15, 0.15, 1.8, 0.15)
    Name("Boix4")
    Join("Boix3", "Boix4")
    Boite(x + 1.65, y + 1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("Boix5")
    Join("Boix4", "Boix5")
    Boite(x + -1.65, y + 1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("Boix6")
    Join("Boix5", "Boix6")
    Boite(x + 1.65, y + -1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("Boix7")
    Join("Boix6", "Boix7")
    Boite(x + -1.65, y + -1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("Boix8")
    Join("Boix7", "Boix8")
    Boite(x + 0, y + 1.65, z + 3.45, 1.8, 0.15, 0.15)
    Name("Boix9")
    Join("Boix8", "Boix9")
    Boite(x + 1.65, y + 0, z + 3.45, 0.15, 1.8, 0.15)
    Name("Boix10")
    Join("Boix9", "Boix10")
    Boite(x + 0, y + -1.65, z + 3.45, 1.8, 0.15, 0.15)
    Name("Boix11")
    Join("Boix10", "Boix11")
    Boite(x + -1.65, y + 0, z + 3.45, 0.15, 1.8, 0.15)
    Name("Boix12")
    Join("Boix11", "Boix12")
    Boite(x + 0, y + 0, z + 3.45, 1.5, 1.5, 0.15)
    Name("Boix13")
    Join("Boix12", "Boix13")
    Boite(x + 0, y + 0, z + 0.15, 1.5, 1.5, 0.15)
    Name("Boix14")
    Join("Boix13", "Boix14")Name(‘Cub_4’) Place_obj(‘Cub_4’,x,y,z)
    Name("CubeV")bpy.context.scene.cursor_location = mathutils.Vector((x, y, z)) bpy.ops.view3d.snap_selected_to_cursor(use_offset=False)
print(
    "-----------------------------------------------Cub_ToFaFa: 3 /6 ----------------------------------------------"
)def Cub_5(x=0, y=0, z=0):
    Boite(x + 1.65, y + 0, z + 1.8, 0.15, 1.8, 1.8)
    Name("Bot14")
    Boite(x + -1.65, y + 0, z + 1.8, 0.15, 1.8, 1.8)
    Name("Bot15")
    Join("Bot14", "Bot15")
    Boite(x + 0, y + 0, z + 3.45, 1.5, 1.5, 0.15)
    Name("Bot16")
    Join("Bot15", "Bot16")
    Boite(x + 1.65, y + 0, z + 0.15, 0.15, 1.8, 0.15)
    Name("Bot17")
    Join("Bot16", "Bot17")
    Boite(x + 0, y + -1.65, z + 0.15, 1.8, 0.15, 0.15)
    Name("Bot18")
    Join("Bot17", "Bot18")
    Boite(x + -1.65, y + 0, z + 0.15, 0.15, 1.8, 0.15)
    Name("Bot19")
    Join("Bot18", "Bot19")
    Boite(x + 1.65, y + 1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("Bot20")
    Join("Bot19", "Bot20")
    Boite(x + -1.65, y + 1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("Bot21")
    Join("Bot20", "Bot21")
    Boite(x + 1.65, y + -1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("Bot22")
    Join("Bot21", "Bot22")
    Boite(x + -1.65, y + -1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("Bot23")
    Join("Bot22", "Bot23")
    Boite(x + 0, y + 1.65, z + 3.45, 1.8, 0.15, 0.15)
    Name("Bot24")
    Join("Bot23", "Bot24")
    Boite(x + 1.65, y + 0, z + 3.45, 0.15, 1.8, 0.15)
    Name("Bot25")
    Join("Bot24", "Bot25")
    Boite(x + 0, y + -1.65, z + 3.45, 1.8, 0.15, 0.15)
    Name("Bot26")
    Join("Bot25", "Bot26")
    Boite(x + -1.65, y + 0, z + 3.45, 0.15, 1.8, 0.15)
    Name("Bot27")
    Join("Bot26", "Bot27")
    Boite(x + 0, y + 1.65, z + 0.15, 1.8, 0.15, 0.15)
    Name("Bot28")
    Join("Bot27", "Bot28")
    Name("CubeV")print(
    "-----------------------------------------------Cub_3Face: 3 /6 ----------------------------------------------"
)def Cub_6(x=0, y=0, z=0):
    Boite(x + 0, y + 1.65, z + 0.1, 1.8, 0.15, 0.15)
    Name("B0i1")
    Boite(x + 1.65, y + 0, z + 0.1, 0.15, 1.8, 0.15)
    Name("B0i2")
    Join("B0i1", "B0i2")
    Boite(x + 0, y + -1.65, z + 0.1, 1.8, 0.15, 0.15)
    Name("B0i3")
    Join("B0i2", "B0i3")
    Boite(x + -1.65, y + 0, z + 0.1, 0.15, 1.8, 0.15)
    Name("B0i4")
    Join("B0i3", "B0i4")
    Boite(x + 1.65, y + 1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("B0i5")
    Join("B0i4", "B0i5")
    Boite(x + -1.65, y + 1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("B0i6")
    Join("B0i5", "B0i6")
    Boite(x + 1.65, y + -1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("B0i7")
    Join("B0i6", "B0i7")
    Boite(x + -1.65, y + -1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("B0i8")
    Join("B0i7", "B0i8")
    Boite(x + 0, y + 1.65, z + 3.5, 1.8, 0.15, 0.15)
    Name("B0i9")
    Join("B0i8", "B0i9")
    Boite(x + 1.65, y + 0, z + 3.5, 0.15, 1.8, 0.15)
    Name("B0i10")
    Join("B0i9", "B0i10")
    Boite(x + 0, y + -1.65, z + 3.5, 1.8, 0.15, 0.15)
    Name("B0i11")
    Join("B0i10", "B0i11")
    Boite(x + -1.65, y + 0, z + 3.5, 0.15, 1.8, 0.15)
    Name("B0i12")
    Join("B0i11", "B0i12")
    Boite(x + 1.65, y + 0, z + 1.8, 0.15, 1.8, 1.8)
    Name("B0i13")
    Join("B0i12", "B0i13")
    Boite(x + 0, y + 1.65, z + 1.8, 1.8, 0.15, 1.8)
    Name("B0i14")
    Join("B0i13", "B0i14")
    Boite(x + 0, y + 0, z + 0.1, 1.5, 1.5, 0.15)
    Name("B0i15")
    Join("B0i14", "B0i15")
    bpy.ops.transform.resize(value=(1, 1, 3.6 / 3.7))
    Name("CubeV")print(
    "-----------------------------------------------FaceaFace: 3 /6 ----------------------------------------------"
)def Cub_7(x=0, y=0, z=0):
    Boite(x + 0, y + 1.65, z + 0.1, 1.8, 0.15, 0.15)
    Name("Box1")
    Boite(x + 1.65, y + 0, z + 0.1, 0.15, 1.8, 0.15)
    Name("Box2")
    Join("Box1", "Box2")
    Boite(x + 0, y + -1.65, z + 0.1, 1.8, 0.15, 0.15)
    Name("Box3")
    Join("Box2", "Box3")
    Boite(x + -1.65, y + 0, z + 0.1, 0.15, 1.8, 0.15)
    Name("Box4")
    Join("Box3", "Box4")
    Boite(x + 1.65, y + 1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("Box5")
    Join("Box4", "Box5")
    Boite(x + -1.65, y + 1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("Box6")
    Join("Box5", "Box6")
    Boite(x + 1.65, y + -1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("Box7")
    Join("Box6", "Box7")
    Boite(x + -1.65, y + -1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("Box8")
    Join("Box7", "Box8")
    Boite(x + 0, y + 1.65, z + 3.5, 1.8, 0.15, 0.15)
    Name("Box9")
    Join("Box8", "Box9")
    Boite(x + 1.65, y + 0, z + 3.5, 0.15, 1.8, 0.15)
    Name("Box10")
    Join("Box9", "Box10")
    Boite(x + 0, y + -1.65, z + 3.5, 1.8, 0.15, 0.15)
    Name("Box11")
    Join("Box10", "Box11")
    Boite(x + -1.65, y + 0, 3.5, 0.15, 1.8, 0.15)
    Name("Box12")
    Join("Box11", "Box12")
    Boite(x + 1.65, y + 0, z + 1.8, 0.15, 1.8, 1.8)
    Name("Box13")
    Join("Box12", "Box13")
    Boite(x + -1.65, y + 0, z + 1.8, 0.15, 1.8, 1.8)
    Name("Box14")
    Join("Box13", "Box14")
    Boite(x + 0, y + 0, z + 0.1, 1.5, 1.5, 0.15)
    Name("Box15")
    Join("Box14", "Box15")
    bpy.ops.transform.resize(value=(1, 1, 3.6 / 3.7))
    Name("CubeV")print(
    "-----------------------------------------------Cube_SoFaTo: 3 /6 ----------------------------------------------"
)def Cub_8(x=0, y=0, z=0):
    Boite(x + 0, y + 1.65, z + 0.15, 1.8, 0.15, 0.15)
    Name("Box16")
    Boite(x + 1.65, y + 0, z + 0.15, 0.15, 1.8, 0.15)
    Name("Box17")
    Join("Box16", "Box17")
    Boite(x + 0, y + -1.65, z + 0.15, 1.8, 0.15, 0.15)
    Name("Box18")
    Join("Box17", "Box18")
    Boite(x + -1.65, y + 0, z + 0.15, 0.15, 1.8, 0.15)
    Name("Box19")
    Join("Box18", "Box19")
    Boite(x + 1.65, y + 1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("Box20")
    Join("Box19", "Box20")
    Boite(x + -1.65, y + 1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("Box21")
    Join("Box20", "Box21")
    Boite(x + 1.65, y + -1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("Box22")
    Join("Box21", "Box22")
    Boite(x + -1.65, y + -1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("Box23")
    Join("Box22", "Box23")
    Boite(x + 0, y + 1.65, z + 3.45, 1.8, 0.15, 0.15)
    Name("Box24")
    Join("Box23", "Box24")
    Boite(x + 1.65, y + 0, z + 3.45, 0.15, 1.8, 0.15)
    Name("Box25")
    Join("Box24", "Box25")
    Boite(x + 0, y + -1.65, z + 3.45, 1.8, 0.15, 0.15)
    Name("Box26")
    Join("Box25", "Box26")
    Boite(x + -1.65, y + 0, z + 3.45, 0.15, 1.8, 0.15)
    Name("Box27")
    Join("Box26", "Box27")
    Boite(x + 0, y + 0, z + 3.45, 1.5, 1.5, 0.15)
    Name("Box28")
    Join("Box27", "Box28")
    Boite(x + 0, y + 1.65, z + 1.8, 1.8, 0.15, 1.8)
    Name("Box29")
    Join("Box28", "Box29")
    Boite(x + 0, y + 0, z + 0.15, 1.5, 1.5, 0.15)
    Name("Box30")
    Join("Box29", "Box30")Name(‘Cub_8’) Place_obj(‘Cub_8’,x,y,z)
    Name("CubeV")bpy.context.scene.cursor_location = mathutils.Vector((x, y, z)) bpy.ops.view3d.snap_selected_to_cursor(use_offset=False)
print(
    "-----------------------------------------------Cub_4Face: 4 /6 ----------------------------------------------"
)def Cub_9(x=0, y=0, z=0):
    Boite(x + 0, y + 1.65, z + 0.1, 1.8, 0.15, 0.15)
    Name("B0i16")
    Boite(x + 1.65, y + 0, z + 0.1, 0.15, 1.8, 0.15)
    Name("B0i17")
    Join("B0i16", "B0i17")
    Boite(x + 0, y + -1.65, z + 0.1, 1.8, 0.15, 0.15)
    Name("B0i18")
    Join("B0i17", "B0i18")
    Boite(x + -1.65, y + 0, z + 0.1, 0.15, 1.8, 0.15)
    Name("B0i19")
    Join("B0i18", "B0i19")
    Boite(x + 1.65, y + 1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("B0i20")
    Join("B0i19", "B0i20")
    Boite(x + -1.65, y + 1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("B0i21")
    Join("B0i20", "B0i21")
    Boite(x + 1.65, y + -1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("B0i22")
    Join("B0i21", "B0i22")
    Boite(x + -1.65, y + -1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("B0i23")
    Join("B0i22", "B0i23")
    Boite(x + 0, y + 1.65, z + 3.5, 1.8, 0.15, 0.15)
    Name("B0i24")
    Join("B0i23", "B0i24")
    Boite(x + 1.65, y + 0, z + 3.5, 0.15, 1.8, 0.15)
    Name("B0i25")
    Join("B0i24", "B0i25")
    Boite(x + 0, y + -1.65, z + 3.5, 1.8, 0.15, 0.15)
    Name("B0i26")
    Join("B0i25", "B0i26")
    Boite(x + -1.65, y + 0, z + 3.5, 0.15, 1.8, 0.15)
    Name("B0i27")
    Join("B0i26", "B0i27")
    Boite(x + 1.65, y + 0, z + 1.8, 0.15, 1.8, 1.8)
    Name("B0i28")
    Join("B0i27", "B0i28")
    Boite(x + -1.65, y + 0, z + 1.8, 0.15, 1.8, 1.8)
    Name("B0i29")
    Join("B0i28", "B0i29")
    Boite(x + 0, y + 1.65, z + 1.8, 1.8, 0.15, 1.8)
    Name("B0i30")
    Join("B0i29", "B0i30")
    Boite(x + 0, y + 1.65, z + 1.8, 1.8, 0.15, 1.8)
    Name("B0i31")
    Join("B0i30", "B0i31")
    Boite(x + 0, y + 0, z + 0.1, 1.5, 1.5, 0.15)
    Name("B0i32")
    Join("B0i31", "B0i32")
    bpy.ops.transform.resize(value=(1, 1, 3.6 / 3.7))
    Name("CubeV")print(
    "-----------------------------------------------Cub_To3Fa: 4 /6 ----------------------------------------------"
)def Cub_10(x=0, y=0, z=0):
    Boite(x + 0, y + 1.65, z + 1.8, 1.8, 0.15, 1.8)
    Name("Boi1")
    Boite(x + 1.65, y + 0, z + 1.8, 0.15, 1.8, 1.8)
    Name("Boi2")
    Join("Boi1", "Boi2")
    Boite(x + -1.65, y + 0, z + 1.8, 0.15, 1.8, 1.8)
    Name("Boi3")
    Join("Boi2", "Boi3")
    Boite(x + 0, y + 0, z + 3.45, 1.5, 1.5, 0.15)
    Name("Boi4")
    Join("Boi3", "Boi4")
    Boite(x + 1.65, y + 0, z + 0.15, 0.15, 1.8, 0.15)
    Name("Boi5")
    Join("Boi4", "Boi5")
    Boite(x + 0, y + -1.65, z + 0.15, 1.8, 0.15, 0.15)
    Name("Boi6")
    Join("Boi5", "Boi6")
    Boite(x + -1.65, y + 0, z + 0.15, 0.15, 1.8, 0.15)
    Name("Boi7")
    Join("Boi6", "Boi7")
    Boite(x + 1.65, y + 1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("Boi8")
    Join("Boi7", "Boi8")
    Boite(x + -1.65, y + 1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("Boi9")
    Join("Boi8", "Boi9")
    Boite(x + 1.65, y + -1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("Boi10")
    Join("Boi9", "Boi10")
    Boite(x + -1.65, y + -1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("Boi11")
    Join("Boi10", "Boi11")
    Boite(x + 0, y + 1.65, z + 3.45, 1.8, 0.15, 0.15)
    Name("Boi12")
    Join("Boi11", "Boi12")
    Boite(x + 1.65, y + 0, z + 3.45, 0.15, 1.8, 0.15)
    Name("Boi13")
    Join("Boi12", "Boi13")
    Boite(x + 0, y + -1.65, z + 3.45, 1.8, 0.15, 0.15)
    Name("Boi14")
    Join("Boi13", "Boi14")
    Boite(x + -1.65, y + 0, z + 3.45, 0.15, 1.8, 0.15)
    Name("Boi15")
    Join("Boi14", "Boi15")
    Boite(x + 0, y + 1.65, z + 0.15, 1.8, 0.15, 0.15)
    Name("Boi16")
    Join("Boi15", "Boi16")Name(‘Cub_10’) Place_obj(‘Cub_10’,x,1.65+y,z)
    Name("CubeV")bpy.context.scene.cursor_location = mathutils.Vector((x, y, z)) bpy.ops.view3d.snap_selected_to_cursor()
print(
    "-----------------------------------------------Cub_5Face: 5 /6 ----------------------------------------------"
)def Cub_11(x=0, y=0, z=0):
    Boite(x + 0, y + 1.65, z + 0.1, 1.8, 0.15, 0.15)
    Name("B0it1")
    Boite(x + 1.65, y + 0, z + 0.1, 0.15, 1.8, 0.15)
    Name("B0it2")
    Join("B0it1", "B0it2")
    Boite(x + 0, y + -1.65, z + 0.1, 1.8, 0.15, 0.15)
    Name("B0it3")
    Join("B0it2", "B0it3")
    Boite(x + -1.65, y + 0, z + 0.1, 0.15, 1.8, 0.15)
    Name("B0it4")
    Join("B0it3", "B0it4")
    Boite(x + 1.65, y + 1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("B0it5")
    Join("B0it4", "B0it5")
    Boite(x + -1.65, y + 1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("B0it6")
    Join("B0it5", "B0it6")
    Boite(x + 1.65, y + -1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("B0it7")
    Join("B0it6", "B0it7")
    Boite(x + -1.65, y + -1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("B0it8")
    Join("B0it8", "B0it7")
    Boite(x + 0, y + 1.65, z + 3.5, 1.8, 0.15, 0.15)
    Name("B0it9")
    Join("B0it8", "B0it9")
    Boite(x + 1.65, y + 0, z + 3.5, 0.15, 1.8, 0.15)
    Name("B0it10")
    Join("B0it9", "B0it10")
    Boite(x + 0, y + -1.65, z + 3.5, 1.8, 0.15, 0.15)
    Name("B0it11")
    Join("B0it10", "B0it11")
    Boite(x + -1.65, y + 0, z + 3.5, 0.15, 1.8, 0.15)
    Name("B0it12")
    Join("B0it11", "B0it12")
    Boite(x + 1.65, y + 0, z + 1.8, 0.15, 1.8, 1.8)
    Name("B0it13")
    Join("B0it12", "B0it13")
    Boite(x + -1.65, y + 0, z + 1.8, 0.15, 1.8, 1.8)
    Name("B0it14")
    Join("B0it13", "B0it14")
    Boite(x + 0, y + 1.65, z + 1.8, 1.8, 0.15, 1.8)
    Name("B0it15")
    Join("B0it14", "B0it15")
    Boite(x + 0, y + -1.65, z + 1.8, 1.8, 0.15, 1.8)
    Name("B0it16")
    Join("B0it15", "B0it16")
    Boite(x + 0, y + 0, z + 0.1, 1.5, 1.5, 0.15)
    Name("B0it17")
    Join("B0it16", "B0it17")
    bpy.ops.transform.resize(value=(1, 1, 3.6 / 3.7))
    Name("CubeV")print(
    "-----------------------------------------------Cub_Plein: 6 /6 ----------------------------------------------"
)def Cub_12(x=0, y=0, z=0):
    Boite(x + 0, y + 1.65, z + 0.1, 1.8, 0.15, 0.15)
    Name("Boix15")
    Boite(x + 1.65, y + 0, z + 0.1, 0.15, 1.8, 0.15)
    Name("Boix16")
    Join("Boix15", "Boix16")
    Boite(x + 0, y + -1.65, z + 0.1, 1.8, 0.15, 0.15)
    Name("Boix17")
    Join("Boix16", "Boix17")
    Boite(x + -1.65, y + 0, z + 0.1, 0.15, 1.8, 0.15)
    Name("Boix18")
    Join("Boix17", "Boix18")
    Boite(x + 1.65, y + 1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("Boix19")
    Join("Boix18", "Boix19")
    Boite(x + -1.65, y + 1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("Boix20")
    Join("Boix19", "Boix20")
    Boite(x + 1.65, y + -1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("Boix21")
    Join("Boix20", "Boix21")
    Boite(x + -1.65, y + -1.65, z + 1.8, 0.15, 0.15, 1.8)
    Name("Boix22")
    Join("Boix21", "Boix22")
    Boite(x + 0, y + 1.65, z + 3.5, 1.8, 0.15, 0.15)
    Name("Boix23")
    Join("Boix22", "Boix23")
    Boite(x + 1.65, y + 0, z + 3.5, 0.15, 1.8, 0.15)
    Name("Boix24")
    Join("Boix23", "Boix24")
    Boite(x + 0, y + -1.65, z + 3.5, 1.8, 0.15, 0.15)
    Name("Boix25")
    Join("Boix24", "Boix25")
    Boite(x + -1.65, y + 0, z + 3.5, 0.15, 1.8, 0.15)
    Name("Boix26")
    Join("Boix25", "Boix26")
    Boite(x + 1.65, y + 0, z + 1.8, 0.15, 1.8, 1.8)
    Name("Boix27")
    Join("Boix26", "Boix27")
    Boite(x + -1.65, y + 0, z + 1.8, 0.15, 1.8, 1.8)
    Name("Boix28")
    Join("Boix27", "Boix28")
    Boite(x + 0, y + 1.65, z + 1.8, 1.8, 0.15, 1.8)
    Name("Boix29")
    Join("Boix28", "Boix29")
    Boite(x + 0, y + -1.65, z + 1.8, 1.8, 0.15, 1.8)
    Name("Boix30")
    Join("Boix29", "Boix30")
    Boite(x + 0, y + 0, z + 3.5, 1.5, 1.5, 0.15)
    Name("Boix31")
    Join("Boix30", "Boix31")
    Boite(x + 0, y + 0, z + 0.1, 1.5, 1.5, 0.15)
    Name("Boix32")
    Join("Boix31", "Boix32")
    bpy.ops.transform.resize(value=(1, 1, 3.6 / 3.7))
    Name("CubeV")---------------------------------------------------Fonctions Cubes-Circulation----------------------------------
EscPass1()
def Pan_Inc1(o, p, q, r, s, t):
    bpy.ops.mesh.primitive_cube_add(location=(o, p, q))
    bpy.ops.transform.resize(value=(r, s, t))
    bpy.ops.transform.rotate(
        value=math.pi / 7, axis=(0, 1, 0), constraint_axis=(False, True, False)
    )def Pan_Inc2(o, p, q, r, s, t):
    bpy.ops.mesh.primitive_cube_add(location=(o, p, q))
    bpy.ops.transform.resize(value=(r, s, t))
    bpy.ops.transform.rotate(
        value=math.pi / 3.3, axis=(1, 0, 0), constraint_axis=(True, False, False)
    )def Rampe1(x=0, y=0, z=0):
    Pan_Inc1(x, y + 2.3, z + 0.95, 2, 0.5, 0.05)def Rampe2(x=0, y=0, z=0):
    Pan_Inc2(x - 2.3, y + 0.5, z + 2.7, 0.5, 0.05, 1.65)def Palier1(x=0, y=0, z=0):
    Boite(-2.3, 2.3, 1.8, 0.5, 0.5, 0.05)def Palier2(x=0, y=0, z=0):
    Boite(-2.3, -1.3, 3.65, 0.5, 0.5, 0.05)Passerelle
def Pass90(o, p, q, r, s, t):
    bpy.ops.mesh.primitive_cube_add(location=(o, p, q))
    bpy.ops.transform.resize(value=(r, s, t))def Pass45(o, p, q, r, s, t):
    bpy.ops.mesh.primitive_cube_add(location=(o, p, q))
    bpy.ops.transform.resize(value=(r, s, t))
    bpy.ops.transform.rotate(
        value=math.pi / (-4), axis=(0, 0, 1), constraint_axis=(False, False, True)
    )def Pass1(x=0, y=0, z=0):
    Pass90(0, -1.3, 3.65, 1.8, 0.5, 0.05)def Pass1b(x=0, y=0, z=0):
    Pass90(6.65, -4.5, 3.65, 1.8, 0.5, 0.05)def Pass1c(x=0, y=0, z=0):
    Pass90(13.3, -7.68, 3.65, 1.8, 0.5, 0.05)def Pass2(x=0, y=0, z=0):
    Pass45(3.325, -2.89, 3.65, 2.55, 0.4, 0.05)def Pass2b(x=0, y=0, z=0):
    Pass45(9.97, -6.09, 3.65, 2.55, 0.4, 0.05)Definition
def EscPass1(x=0, y=0, z=0):
    Boite(0, 0, 1.8, 1.8, 1.8, 1.8)
    Name("Cu1")
    Rampe1(0, 0, 0)
    Name("Ram1")
    Join("Cu1", "Ram1")
    Rampe2(0, 0, 0)
    Name("Ram2")
    Join("Ram1", "Ram2")
    Palier1()
    Name("Pa1")
    Join("Ram2", "Pa1")
    Palier2()
    Name("Pa2")
    Join("Pa1", "Pa2")
    Pass1()
    Name("Pas1")
    Join("Pa2", "Pas1")
    Pass1b()
    Name("Pas1b")
    Join("Pas1", "Pas1b")
    Pass1c()
    Name("Pas1c")
    Join("Pas1b", "Pas1c")
    Pass2()
    Name("Pas2")
    Join("Pas1c", "Pas2")
    Pass2b()
    Name("Pas2b")
    Join("Pas2", "Pas2b")
    Name("Cube")EscPass2()
def Pass45c(o, p, q, r, s, t):
    bpy.ops.mesh.primitive_cube_add(location=(o, p, q))
    bpy.ops.transform.resize(value=(r, s, t))
    bpy.ops.transform.rotate(
        value=math.pi / 4, axis=(0, 0, 1), constraint_axis=(False, False, True)
    )def Pass2c(x=0, y=0, z=0):
    Pass45(-0.28, -2.89, 3.65, 2.55, 0.4, 0.05)def Pass2d(x=0, y=0, z=0):
    Pass45(6.36, -6.06, 3.65, 2.55, 0.4, 0.05)def Pass2e(x=0, y=0, z=0):
    Pass45c(6.35, -12.7, 3.65, 2.55, 0.4, 0.05)def Pass1d(x=0, y=0, z=0):
    Pass90(3.045, -4.475, 3.65, 1.8, 0.5, 0.05)def Pass1e(x=0, y=0, z=0):
    Pass90(7.94, -9.37, 3.65, 0.5, 1.8, 0.05)def Pass1f(x=0, y=0, z=0):
    Pass90(4.755, -16.02, 3.65, 0.5, 1.8, 0.05)def EscPass2(x=0, y=0, z=0):
    Boite(0, 0, 1.8, 1.8, 1.8, 1.8)
    Name("Cu2")
    Rampe1(0, 0, 0)
    Name("Ra1")
    Join("Cu2", "Ra1")
    Rampe2(0, 0, 0)
    Name("Ra2")
    Join("Ra1", "Ra2")
    Palier1()
    Name("Pal1")
    Join("Ra2", "Pal1")
    Palier2()
    Name("Pal2")
    Join("Pal1", "Pal2")
    Pass2c()
    Name("Pass2c")
    Join("Pal2", "Pass2c")
    Pass1d()
    Name("Pass1d")
    Join("Pass2c", "Pass1d")
    Pass2d()
    Name("Pass2d")
    Join("Pass1d", "Pass2d")
    Pass1e()
    Name("Pass1e")
    Join("Pass2d", "Pass1e")
    Pass2e()
    Name("Pass2e")
    Join("Pass1e", "Pass2e")
    Pass1f()
    Name("Pass1f")
    Join("Pass2e", "Pass1f")
    Name("Cube")EscPass3()
def Pan_Inc3(o, p, q, r, s, t):
    bpy.ops.mesh.primitive_cube_add(location=(o, p, q))
    bpy.ops.transform.resize(value=(r, s, t))
    bpy.ops.transform.rotate(
        value=math.pi / (-3.3), axis=(0, 1, 0), constraint_axis=(False, True, False)
    )def Pan_Inc4(o, p, q, r, s, t):
    bpy.ops.mesh.primitive_cube_add(location=(o, p, q))
    bpy.ops.transform.resize(value=(r, s, t))
    bpy.ops.transform.rotate(
        value=math.pi / 3.3, axis=(0, 1, 0), constraint_axis=(False, True, False)
    )def Pass90b(o, p, q, r, s, t):
    bpy.ops.mesh.primitive_cube_add(location=(o, p, q))
    bpy.ops.transform.resize(value=(r, s, t))def Pass45b(o, p, q, r, s, t):
    bpy.ops.mesh.primitive_cube_add(location=(o, p, q))
    bpy.ops.transform.resize(value=(r, s, t))
    bpy.ops.transform.rotate(
        value=math.pi / 4, axis=(0, 0, 1), constraint_axis=(False, False, True)
    )def Pass45(o, p, q, r, s, t):
    bpy.ops.mesh.primitive_cube_add(location=(o, p, q))
    bpy.ops.transform.resize(value=(r, s, t))
    bpy.ops.transform.rotate(
        value=math.pi / (-4), axis=(0, 0, 1), constraint_axis=(False, False, True)
    )Rampe
def Rampe3(x=0, y=0, z=0):
    Pan_Inc3(x - 0.5, y - 2.3, z + 2.7, 0.05, 0.5, 1.65)def Rampe4(x=0, y=0, z=0):
    Pan_Inc4(x - 0.4, y - 3.3, z + 0.94, 0.05, 0.5, 1.5)Paliers
def Palier3(x=0, y=0, z=0):
    Boite(-2.3, -1.8, 3.65, 0.5, 1, 0.05)def Palier4(x=0, y=0, z=0):
    Boite(1.3, -2.8, 1.8, 0.5, 1, 0.05)def Pass3(x=0, y=0, z=0):
    Pass45b(-0.3, 0.3, 3.65, 2.55, 0.4, 0.05)def Pass3b(x=0, y=0, z=0):
    Pass45b(6.32, 3.46, 3.65, 2.55, 0.4, 0.05)def Pass3c(x=0, y=0, z=0):
    Pass45b(9.5, 10.1, 3.65, 2.55, 0.4, 0.05)def Pass3d(x=0, y=0, z=0):
    Pass45(16.14, 10.1, 3.65, 2.55, 0.4, 0.05)def Pass4(x=0, y=0, z=0):
    Pass90b(3, 1.87, 3.65, 1.8, 0.5, 0.05)def Pass4b(x=0, y=0, z=0):
    Pass90b(12.82, 11.69, 3.65, 1.8, 0.5, 0.05)def Pass5(x=0, y=0, z=0):
    Pass90b(7.91, 6.78, 3.65, 0.5, 1.8, 0.05)def EscPass3(x=0, y=0, z=0):
    Boite(0, 0, 1.8, 1.8, 1.8, 1.8)
    Name("Cu3")
    Palier3()
    Name("Pl3")
    Join("Cu3", "Pl3")
    Palier4()
    Name("Pl4")
    Join("Pl3", "Pl4")
    Rampe3()
    Name("Rm3")
    Join("Pl4", "Rm3")
    Rampe4()
    Name("Rm4")
    Join("Rm3", "Rm4")
    Pass3()
    Name("Ps3")
    Join("Rm4", "Ps3")
    Pass4()
    Name("Ps4")
    Join("Ps3", "Ps4")
    Pass4b()
    Name("Ps4b")
    Join("Ps4", "Ps4b")
    Pass3b()
    Name("Ps3b")
    Join("Ps4b", "Ps3b")
    Pass3c()
    Name("Ps3c")
    Join("Ps3b", "Ps3c")
    Pass3d()
    Name("Ps3d")
    Join("Ps3c", "Ps3d")
    Pass5()
    Name("Ps5")
    Join("Ps3d", "Ps5")
    Name("Cube")EscPass4()
def Pass6(x=0, y=0, z=0):
    Pass90(-1.3, 0, 3.65, 0.5, 1.8, 0.05)def Pass3e(x=0, y=0, z=0):
    Pass45(-2.89, 3.32, 3.65, 2.55, 0.4, 0.05)def Pass3f(x=0, y=0, z=0):
    Pass45(-9.52, 6.49, 3.65, 2.55, 0.4, 0.05)def Pass3g(x=0, y=0, z=0):
    Pass45(-16.17, 9.7, 3.65, 2.55, 0.4, 0.05)def Pass7(x=0, y=0, z=0):
    Pass90(-6.2, 4.9, 3.65, 1.8, 0.5, 0.05)def Pass8(x=0, y=0, z=0):
    Pass90(-12.85, 8.1, 3.65, 1.8, 0.5, 0.05)def EscPass4(x=0, y=0, z=0):
    Boite(0, 0, 1.8, 1.8, 1.8, 1.8)
    Name("Cu4")
    Palier3()
    Name("Pli3")
    Join("Cu4", "Pli3")
    Palier4()
    Name("Pli4")
    Join("Pli3", "Pli4")
    Rampe3()
    Name("Rp3")
    Join("Pli4", "Rp3")
    Rampe4()
    Name("Rp4")
    Join("Rp3", "Rp4")
    Pass6()
    Name("Pss6")
    Join("Rp4", "Pss6")
    Pass3e()
    Name("Pss3e")
    Join("Pss6", "Pss3e")
    Pass7()
    Name("Pss7")
    Join("Pss3e", "Pss7")
    Pass3f()
    Name("Pss3f")
    Join("Pss7", "Pss3f")
    Pass8()
    Name("Pss8")
    Join("Pss3f", "Pss8")
    Pass3g()
    Name("Pss3g")
    Join("Pss8", "Pss3g")
    Name("Cube")EscPass5()
def Pass45c(o, p, q, r, s, t):
    bpy.ops.mesh.primitive_cube_add(location=(o, p, q))
    bpy.ops.transform.resize(value=(r, s, t))
    bpy.ops.transform.rotate(
        value=math.pi / 4, axis=(0, 0, 1), constraint_axis=(False, False, True)
    )def Pass9(x=0, y=0, z=0):
    Pass90(-12.73, 1.7, 3.65, 1.8, 0.5, 0.05)def Pass3h(x=0, y=0, z=0):
    Pass45c(-9.4, 3.3, 3.65, 2.55, 0.4, 0.05)def EscPass5(x=0, y=0, z=0):
    Boite(0, 0, 1.8, 1.8, 1.8, 1.8)
    Name("Cu5")
    Palier3()
    Name("Plr3")
    Join("Cu5", "Plr3")
    Palier4()
    Name("Plr4")
    Join("Plr3", "Plr4")
    Rampe3()
    Name("Rmp3")
    Join("Plr4", "Rmp3")
    Rampe4()
    Name("Rmp4")
    Join("Rmp3", "Rmp4")
    Pass6()
    Name("Passe6")
    Join("Rmp4", "Passe6")
    Pass3e()
    Name("Passe3e")
    Join("Passe6", "Passe3e")
    Pass7()
    Name("Passe7")
    Join("Passe3e", "Passe7")
    Pass3f()
    Name("Passe3f")
    Join("Passe7", "Passe3f")
    Pass8()
    Name("Passe8")
    Join("Passe3f", "Passe8")
    Pass3g()
    Name("Passe3g")
    Join("Passe8", "Passe3g")
    Pass3h()
    Name("Passe3h")
    Join("Passe3g", "Passe3h")
    Pass9()
    Name("Passe9")
    Join("Passe3h", "Passe9")
    Name("Cube")EscPass6()
def EscPass6(x=0, y=0, z=0):
    Boite(0, 0, 1.8, 1.8, 1.8, 1.8)
    Name("Cu6")
    Palier3()
    Name("Prl3")
    Join("Cu6", "Prl3")
    Palier4()
    Name("Prl4")
    Join("Prl3", "Prl4")
    Rampe3()
    Name("Rpm3")
    Join("Prl4", "Rpm3")
    Rampe4()
    Name("Rpm4")
    Join("Rpm3", "Rpm4")
    Pass6()
    Name("Psa6")
    Join("Rpm4", "Psa6")
    Pass3e()
    Name("Psa3e")
    Join("Psa6", "Psa3e")
    Pass7()
    Name("Psa7")
    Join("Psa3e", "Psa7")
    Pass3h()
    Name("Psa3h")
    Join("Psa7", "Psa3h")
    Pass9()
    Name("Psa9")
    Join("Psa3h", "Psa9")
    Name("Pass")EscPass7()
def Pass45d(o, p, q, r, s, t):
    bpy.ops.mesh.primitive_cube_add(location=(o, p, q))
    bpy.ops.transform.resize(value=(r, s, t))
    bpy.ops.transform.rotate(
        value=math.pi / 4, axis=(0, 0, 1), constraint_axis=(False, False, True)
    )def Pass1g(x=0, y=0, z=0):
    Pass90(4.92, -6.2, 3.65, 0.5, 1.8, 0.05)def Pass1h(x=0, y=0, z=0):
    Pass90(-0.01, -11.11, 3.65, 1.8, 0.5, 0.05)def Pass1j(x=0, y=0, z=0):
    Pass90(-3.61, -11.11, 3.65, 1.8, 0.5, 0.05)def Pass3i(x=0, y=0, z=0):
    Pass45d(3.32, -9.52, 3.65, 2.55, 0.4, 0.05)def Pass3j(x=0, y=0, z=0):
    Pass45d(-6.9, -12.7, 3.65, 2.55, 0.4, 0.05)def EscPass7(x=0, y=0, z=0):
    Boite(0, 0, 1.8, 1.8, 1.8, 1.8)
    Name("Cu7")
    Rampe1()
    Name("Rma1")
    Join("Cu7", "Rma1")
    Rampe2()
    Name("Rma2")
    Join("Rma1", "Rma2")
    Palier1()
    Name("Pla1")
    Join("Rma2", "Pla1")
    Palier2()
    Name("Pla2")
    Join("Pla1", "Pla2")
    Pass1()
    Name("Pssa1")
    Join("Pla2", "Pssa1")
    Pass1g()
    Name("Pssa1g")
    Join("Pssa1", "Pssa1g")
    Pass2()
    Name("Pssa2")
    Join("Pssa1g", "Pssa2")
    Pass3i()
    Name("Pssa3i")
    Join("Pssa2", "Pssa3i")
    Pass1h()
    Name("Pssa1h")
    Join("Pssa3i", "Pssa1h")
    Pass1j()
    Name("Pssa1j")
    Join("Pssa1h", "Pssa1j")
    Pass3j()
    Name("Pssa3j")
    Join("Pssa1j", "Pssa3j")
    Name("Cube")EscPass8()
def Pass45e(o, p, q, r, s, t):
    bpy.ops.mesh.primitive_cube_add(location=(o, p, q))
    bpy.ops.transform.resize(value=(r, s, t))
    bpy.ops.transform.rotate(
        value=math.pi / (-4), axis=(0, 0, 1), constraint_axis=(False, False, True)
    )def Pass3k(x=0, y=0, z=0):
    Pass45e(6.6, -9.48, 3.65, 2.55, 0.4, 0.05)def EscPass8(x=0, y=0, z=0):
    Boite(0, 0, 1.8, 1.8, 1.8, 1.8)
    Name("Cu8")
    Rampe1()
    Name("Rem1")
    Join("Cu8", "Rem1")
    Rampe2()
    Name("Rem2")
    Join("Rem1", "Rem2")
    Palier1()
    Name("Ple1")
    Join("Rem2", "Ple1")
    Palier2()
    Name("Ple2")
    Join("Ple1", "Ple2")
    Pass1()
    Name("Pes1")
    Join("Ple2", "Pes1")
    Pass1g()
    Name("Pes1g")
    Join("Pes1", "Pes1g")
    Pass2()
    Name("Pes2")
    Join("Pes1g", "Pes2")
    Pass3i()
    Name("Pes3i")
    Join("Pes2", "Pes3i")
    Pass1h()
    Name("Pes1h")
    Join("Pes3i", "Pes1h")
    Pass1j()
    Name("Pes1j")
    Join("Pes1h", "Pes1j")
    Pass3j()
    Name("Pes3j")
    Join("Pes1j", "Pes3j")
    Pass3k()
    Name("Pes3k")
    Join("Pes3j", "Pes3k")
    Name("Cube")EscPass9()
def Pass1i(x=0, y=0, z=0):
    Pass90(8.2, -12.8, 3.65, 0.5, 1.8, 0.05)def EscPass9(x=0, y=0, z=0):
    Boite(0, 0, 1.8, 1.8, 1.8, 1.8)
    Name("Cu9")
    Rampe1()
    Name("Rae1")
    Join("Cu9", "Rae1")
    Rampe2()
    Name("Rae2")
    Join("Rae1", "Rae2")
    Palier1()
    Name("Pae1")
    Join("Rae2", "Pae1")
    Palier2()
    Name("Pae2")
    Join("Pae1", "Pae2")
    Pass1()
    Name("Pase1")
    Join("Pae2", "Pase1")
    Pass1g()
    Name("Pase1g")
    Join("Pase1", "Pase1g")
    Pass2()
    Name("Pase2")
    Join("Pase1g", "Pase2")
    Pass3i()
    Name("Pase3i")
    Join("Pase2", "Pase3i")
    Pass3k()
    Name("Pase3k")
    Join("Pase3i", "Pase3k")
    Pass1i()
    Name("Pase1i")
    Join("Pase3k", "Pase1i")
    Name("Cube")EscPass10()
def Pass1k(x=0, y=0, z=0):
    Pass90(9.9, -11.07, 3.65, 1.8, 0.5, 0.05)def Pass1l(x=0, y=0, z=0):
    Pass90(1.75, -12.8, 3.65, 0.5, 1.8, 0.05)def EscPass10(x=0, y=0, z=0):
    Boite(0, 0, 1.8, 1.8, 1.8, 1.8)
    Name("Cu10")
    Rampe1()
    Name("Rape1")
    Join("Cu10", "Rape1")
    Palier1()
    Name("Pler1")
    Join("Rape1", "Pler1")
    Rampe2()
    Name("Rape2")
    Join("Pler1", "Rape2")
    Palier2()
    Name("Pler2")
    Join("Rape2", "Pler2")
    Pass1()
    Name("Psl1")
    Join("Pler2", "Psl1")
    Pass1g()
    Name("Psl1g")
    Join("Psl1", "Psl1g")
    Pass2()
    Name("Psl2")
    Join("Psl1g", "Psl2")
    Pass3i()
    Name("Psl3i")
    Join("Psl2", "Psl3i")
    Pass3k()
    Name("Psl3k")
    Join("Psl3i", "Psl3k")
    Pass1k()
    Name("Psl1k")
    Join("Psl3k", "Psl1k")
    Pass1l()
    Name("Psl1l")
    Join("Psl1k", "Psl1l")
    Name("Cube")LISTE_CUBE
NOMBRE DE FACE
Cub_0= 0/6 Cub_1= 1/6 Cub_2= 1/6 Cub_3= 2/6 Cub_4= 2/6 Cub_5= 3/6 Cub_6= 3/6 Cub_7= 3/6 Cub_8= 3/6 Cub_9= 4/6 Cub_10= 4/6 Cub_11= 5/6 Cub_12= 6/6
L_CUB = [
    Cub_0,
    Cub_1,
    Cub_2,
    Cub_3,
    Cub_4,
    Cub_5,
    Cub_6,
    Cub_7,
    Cub_8,
    Cub_9,
    Cub_10,
    Cub_11,
    Cub_12,
]QUANTITE DE CUBES PAR TYPE
P0 = 10
P1 = 10
P2 = 10
P3 = 10
P4 = 10
P5 = 10
P6 = 5
P7 = 5
P8 = 5
P9 = 5
P10 = 5
P11 = 5
P12 = 10POURCENTAGE DE CUBE PAR TYPE
L_PERC = [P0, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12]DEFINTION
def MIX_CUB(x=0, y=0, z=0):
    NB = random.randint(0, 99)
    Somme = 0
    for i in range(0, 13):
        Somme = Somme + L_PERC[i]
        if NB <= Somme:
            L_CUB[i](x, y, z)
            break"DEFINITIONS NECESSAIRE A LA CREATION DES ARBRES"
print(
    "-----------------------------------------------Modificateurs----------------------------------------------"
)def Join(i, j):
    SelectObjectContext(i)
    bpy.context.scene.objects[i].select = True
    SelectObjectContext(j)
    bpy.context.scene.objects[j].select = True
    bpy.ops.object.join()def Name(k):
    bpy.context.object.name = k
    bpy.context.object.data.name = kdef Place_obj(obj, x=0, y=0, z=0):
    bpy.data.objects[obj].location = (x, y, z)def SelectObjectContext(erd):
    bpy.context.scene.objects[erd].select = Trueprint(
    "-----------------------------------------------Base Volumétrique----------------------------------------------"
)def Boite(x, y, z, dim_x, dim_y, dim_z):
    bpy.ops.mesh.primitive_cube_add(location=(x, y, z))
    bpy.ops.transform.resize(value=(dim_x, dim_y, dim_z))def Cone(x, y, z, dim_x, dim_y, dim_z):
    bpy.ops.mesh.primitive_cone_add(
        radius1=1.5,
        radius2=0,
        depth=1.5,
        view_align=False,
        enter_editmode=False,
        location=(x, y, z),
    )
    bpy.ops.transform.resize(value=(dim_x, dim_y, dim_z))
    bpy.ops.transform.rotate(
        value=math.pi, axis=(1, 0, 0), constraint_axis=(True, False, False)
    )def Conex(x, y, z, r, d, dim_x, dim_y, dim_z, n):
    bpy.ops.mesh.primitive_cone_add(
        radius1=r,
        radius2=0,
        depth=d,
        view_align=False,
        enter_editmode=False,
        location=(x, y, z),
    )
    bpy.ops.transform.resize(value=(dim_x, dim_y, dim_z))
    bpy.ops.transform.rotate(
        value=math.pi / n, axis=(0, 1, 0), constraint_axis=(False, True, False)
    )def Cylindre(x, y, z, dim_x, dim_y, dim_z):
    bpy.ops.mesh.primitive_cylinder_add(location=(x, y, z))
    bpy.ops.transform.resize(value=(dim_x, dim_y, dim_z))def Cylindre1(x, y, z, dim_x, dim_y, dim_z):
    bpy.ops.mesh.primitive_cylinder_add(location=(x, y, z))
    bpy.ops.transform.resize(value=(dim_x, dim_y, dim_z))def Sphere(x, y, z, dim_x, dim_y, dim_z):
    bpy.ops.mesh.primitive_uv_sphere_add(location=(x, y, z))
    bpy.ops.transform.resize(value=(dim_x, dim_y, dim_z))def Boite2(x, y, z, dim_x, dim_y, dim_z):
    bpy.ops.mesh.primitive_cube_add(location=(x, y, z))
    bpy.ops.transform.resize(value=(dim_x, dim_y, dim_z))def Boite3(x, y, z, dim_x, dim_y, dim_z):
    bpy.ops.mesh.primitive_cube_add(location=(x, y, z))
    bpy.ops.transform.resize(value=(dim_x, dim_y, dim_z))def Boite4(x, y, z, dim_x, dim_y, dim_z):
    bpy.ops.mesh.primitive_cube_add(location=(x, y, z))
    bpy.ops.transform.resize(value=(dim_x, dim_y, dim_z))def Boite5(x, y, z, dim_x, dim_y, dim_z):
    bpy.ops.mesh.primitive_cube_add(location=(x, y, z))
    bpy.ops.transform.resize(value=(dim_x, dim_y, dim_z))def Boite6(x, y, z, dim_x, dim_y, dim_z):
    bpy.ops.mesh.primitive_cube_add(location=(x, y, z))
    bpy.ops.transform.resize(value=(dim_x, dim_y, dim_z))def Arete_sol1():
    Boite1(0, 1.75, 0, 1.8, 0.05, 0.05)
    Name("Boit1")
    Boite1(1.75, 0, 0, 0.05, 1.8, 0.05)
    Name("Boit2")
    Join("Boit1", "Boit2")
    Boite1(0, -1.75, 0, 1.8, 0.05, 0.05)
    Name("Boit3")
    Join("Boit2", "Boit3")
    Boite1(-1.75, 0, 0, 0.05, 1.8, 0.05)
    Name("Boit4")
    Join("Boit3", "Boit4")DEFINITION DES ARBRES
print(
    "-----------------------------------------------Tree_ant()----------------------------------------------"
)def Socle(x, y, z, dim_x, dim_y, dim_z):
    bpy.ops.mesh.primitive_cube_add(location=(x, y, z))
    bpy.ops.transform.resize(value=(dim_x, dim_y, dim_z))def StrucTub(x, y, z, dim_x, dim_y, dim_z):
    bpy.ops.mesh.primitive_cylinder_add(location=(x, y, z))
    bpy.ops.transform.resize(value=(dim_x, dim_y, dim_z))def Ant_Princ(x, y, z, dim_x, dim_y, dim_z):
    bpy.ops.mesh.primitive_cylinder_add(location=(x, y, z))
    bpy.ops.transform.resize(value=(dim_x, dim_y, dim_z))
    bpy.ops.transform.rotate(
        value=math.pi / 2, axis=(0, 1, 0), constraint_axis=(False, True, False)
    )def Ant_(x, y, z, dim_x, dim_y, dim_z):
    bpy.ops.mesh.primitive_cylinder_add(location=(x, y, z))
    bpy.ops.transform.resize(value=(dim_x, dim_y, dim_z))
    bpy.ops.transform.rotate(
        value=math.pi / 3, axis=(1, 0, 0), constraint_axis=(True, False, False)
    )def Ant_Sec():
    Ant_(2.125, 0, 9.5, 0.03, 0.03, 1.5)
    Name("Ant_1")
    Ant_(-2.125, 0, 9.5, 0.03, 0.03, 1.5)
    Name("Ant_2")
    Join("Ant_1", "Ant_2")
    Ant_(1.625, 0, 9.5, 0.03, 0.03, 1.5)
    Name("Ant_3")
    Join("Ant_2", "Ant_3")
    Ant_(-1.625, 0, 9.5, 0.03, 0.03, 1.5)
    Name("Ant_4")
    Join("Ant_3", "Ant_4")
    Ant_(1.125, 0, 9.5, 0.03, 0.03, 1.5)
    Name("Ant_5")
    Join("Ant_4", "Ant_5")
    Ant_(-1.125, 0, 9.5, 0.03, 0.03, 1.5)
    Name("Ant_6")
    Join("Ant_5", "Ant_6")
    Ant_(0.625, 0, 9.5, 0.03, 0.03, 1.5)
    Name("Ant_7")
    Join("Ant_6", "Ant_7")
    Ant_(-0.625, 0, 9.5, 0.03, 0.03, 1.5)
    Name("Ant_8")
    Join("Ant_7", "Ant_8")
    StrucTub(0, 0, 5, 0.05, 0.05, 5)
    Name("StrucTub")
    Join("Ant_8", "StrucTub")
    Ant_Princ(0, 0, 9.5, 0.05, 0.05, 2.5)
    Name("Ant_Princ")
    Join("StrucTub", "Ant_Princ")
    Name("An_Sec")print(
    "-----------------------------------------------Tree_scout()----------------------------------------------"
)def Chanfrein(c):
    bpy.ops.object.editmode_toggle()
    bpy.ops.mesh.subdivide(
        number_cuts=10,
        smoothness=0,
        quadtri=False,
        quadcorner="STRAIGHT_CUT",
        fractal=0,
        fractal_along_normal=0,
        seed=0,
    )Bevel pas encore au point
    bpy.ops.object.modifier_add(type="BEVEL")
    bpy.context.object.modifiers["Bevel"].limit_method = "ANGLE"
    bpy.context.object.modifiers["Bevel"].angle_limit = 0.391986
    bpy.ops.mesh.vertices_smooth(repeat=2, xaxis=True, yaxis=True, zaxis=True)
    bpy.context.object.modifiers["Bevel"].width = c
    bpy.ops.object.editmode_toggle()
    bpy.ops.object.modifier_apply(apply_as="DATA", modifier="Bevel")def Fondation(x, y, z, dim_x, dim_y, dim_z):
    bpy.ops.mesh.primitive_cube_add(location=(x, y, z))
    bpy.ops.transform.resize(value=(dim_x, dim_y, dim_z))
    Chanfrein(1)def Cab(x, y, z, dim_x, dim_y, dim_z):
    bpy.ops.mesh.primitive_cube_add(location=(x, y, z))
    bpy.ops.transform.resize(value=(dim_x, dim_y, dim_z))
    Chanfrein(1)def Cabine():
    Cab(0, 0, 14, 0.8, 1.1, 0.05)
    Name("Ca1")
    Cab(0.75, 0, 14.7, 0.05, 1.1, 0.7)
    Name("Ca2")
    Join("Ca1", "Ca2")
    Cab(-0.75, 0, 14.7, 0.05, 1.1, 0.7)
    Name("Ca3")
    Join("Ca2", "Ca3")
    Cab(0, 1.1, 14.7, 0.75, 0.05, 0.3)
    Name("Ca4")
    Join("Ca3", "Ca4")
    Cab(0, -1.1, 14.7, 0.75, 0.05, 0.3)
    Name("Ca5")
    Join("Ca4", "Ca5")
    Name("Cabine")print(
    "-----------------------------------------------Tree_scope()----------------------------------------------"
)def Arete_sol():
    Boite5(0, 1.75, 0, 1.8, 0.05, 0.05)
    Name("Bwt1")
    Boite5(1.75, 0, 0, 0.05, 1.8, 0.05)
    Name("Bwt2")
    Join("Bwt1", "Bwt2")
    Boite5(0, -1.75, 0, 1.8, 0.05, 0.05)
    Name("Bwt3")
    Join("Bwt2", "Bwt3")
    Boite5(-1.75, 0, 0, 0.05, 1.8, 0.05)
    Name("Bwt4")
    Join("Bwt3", "Bwt4")
    Name("Arete_sol1")def Poid_sol(x, y, z, dim_x, dim_y, dim_z):
    bpy.ops.mesh.primitive_cylinder_add(location=(x, y, z))
    bpy.ops.transform.resize(value=(dim_x, dim_y, dim_z))
    bpy.ops.transform.rotate(
        value=math.pi / 2, axis=(0, 1, 0), constraint_axis=(False, True, False)
    )def Hypoth(x, y, z, dim_x, dim_y, dim_z):
    bpy.ops.mesh.primitive_cube_add(location=(x, y, z))
    bpy.ops.transform.resize(value=(dim_x, dim_y, dim_z))
    bpy.ops.transform.rotate(
        value=math.pi / 6, axis=(1, 0, 0), constraint_axis=(True, False, False)
    )def Opp(x, y, z, dim_x, dim_y, dim_z):
    bpy.ops.mesh.primitive_cube_add(location=(x, y, z))
    bpy.ops.transform.resize(value=(dim_x, dim_y, dim_z))
    bpy.ops.transform.rotate(
        value=math.pi / 3, axis=(1, 0, 0), constraint_axis=(True, False, False)
    )def Contr(x, y, z, dim_x, dim_y, dim_z):
    bpy.ops.mesh.primitive_cube_add(location=(x, y, z))
    bpy.ops.transform.resize(value=(dim_x, dim_y, dim_z))
    bpy.ops.transform.rotate(
        value=math.pi / 1.333, axis=(1, 0, 0), constraint_axis=(True, False, False)
    )def Ball(x, y, z, dim_x, dim_y, dim_z):
    bpy.ops.mesh.primitive_uv_sphere_add(
        view_align=False, enter_editmode=False, location=(x, y, z)
    )
    bpy.ops.transform.resize(value=(dim_x, dim_y, dim_z))def Cone(x, y, z, dim_x, dim_y, dim_z):
    bpy.ops.mesh.primitive_cone_add(
        radius1=1.5,
        radius2=0,
        depth=1.5,
        view_align=False,
        enter_editmode=False,
        location=(x, y, z),
    )
    bpy.ops.transform.resize(value=(dim_x, dim_y, dim_z))
    bpy.ops.transform.rotate(
        value=math.pi, axis=(1, 0, 0), constraint_axis=(True, False, False)
    )def Cam(x, y, z, dim_x, dim_y, dim_z):
    bpy.ops.mesh.primitive_cube_add(location=(x, y, z))
    bpy.ops.transform.resize(value=(dim_x, dim_y, dim_z))def Obj(x, y, z, dim_x, dim_y, dim_z):
    bpy.ops.mesh.primitive_cylinder_add(location=(x, y, z))
    bpy.ops.transform.resize(value=(dim_x, dim_y, dim_z))
    bpy.ops.transform.rotate(
        value=math.pi / 2, axis=(1, 0, 0), constraint_axis=(True, False, False)
    )def Charp():
    Boite5(0, 0, 2.925, 0.03, 0.03, 3)
    Name("Bte5")
    Hypoth(0, -2.8, 4.8, 0.03, 0.03, 5.5)
    Name("Hyp")
    Join("Bte5", "Hyp")
    Opp(0, -2.65, 7.5, 0.03, 0.03, 3.1)
    Name("Opp")
    Join("Hyp", "Opp")
    Contr(0, -1.1, 4.8, 0.03, 0.03, 1.55)
    Name("Contr")
    Join("Opp", "Contr")
    Name("Charp")print(
    "-----------------------------------------------Tree_pass()----------------------------------------------"
)def Pied(x, y, z, dim_x, dim_y, dim_z):
    bpy.ops.mesh.primitive_cube_add(location=(x, y, z))
    bpy.ops.transform.resize(value=(dim_x, dim_y, dim_z))def Structure1():
    Boite3(0, 0.325, 1.65, 0.35, 0.025, 0.025)
    Name("Bt1")
    Boite3(0, -0.325, 1.65, 0.35, 0.025, 0.025)
    Name("Bt2")
    Join("Bt1", "Bt2")
    Boite3(0.325, 0, 1.65, 0.025, 0.35, 0.025)
    Name("Bt3")
    Join("Bt2", "Bt3")
    Boite3(-0.325, 0, 1.65, 0.025, 0.35, 0.025)
    Name("Bt4")
    Join("Bt3", "Bt4")def Structure2():
    Boite3(0, 0.325, 3.65, 0.35, 0.025, 0.025)
    Name("Bt5")
    Boite3(0, -0.325, 3.65, 0.35, 0.025, 0.025)
    Name("Bt6")
    Join("Bt5", "Bt6")
    Boite3(0.325, 0, 3.65, 0.025, 0.35, 0.025)
    Name("Bt7")
    Join("Bt6", "Bt7")
    Boite3(-0.325, 0, 3.65, 0.025, 0.35, 0.025)
    Name("Bt8")
    Join("Bt7", "Bt8")def Structure3():
    Boite3(0, 0.325, 5.65, 0.35, 0.025, 0.025)
    Name("Bt9")
    Boite3(0, -0.325, 5.65, 0.35, 0.025, 0.025)
    Name("Bt10")
    Join("Bt9", "Bt10")
    Boite3(0.325, 0, 5.65, 0.025, 0.35, 0.025)
    Name("Bt11")
    Join("Bt10", "Bt11")
    Boite3(-0.325, 0, 5.65, 0.025, 0.35, 0.025)
    Name("Bt12")
    Join("Bt11", "Bt12")def Structure4():
    Boite3(0, 0.325, 7.65, 0.35, 0.025, 0.025)
    Name("Bt13")
    Boite3(0, -0.325, 7.65, 0.35, 0.025, 0.025)
    Name("Bt14")
    Join("Bt13", "Bt14")
    Boite3(0.325, 0, 7.65, 0.025, 0.35, 0.025)
    Name("Bt15")
    Join("Bt14", "Bt15")
    Boite3(-0.325, 0, 7.65, 0.025, 0.35, 0.025)
    Name("Bt16")
    Join("Bt15", "Bt16")def Structure5():
    Boite3(0, 0.325, 9.65, 0.35, 0.025, 0.025)
    Name("Bt17")
    Boite3(0, -0.325, 9.65, 0.35, 0.025, 0.025)
    Name("Bt18")
    Join("Bt17", "Bt18")
    Boite3(0.325, 0, 9.65, 0.025, 0.35, 0.025)
    Name("Bt19")
    Join("Bt18", "Bt19")
    Boite3(-0.325, 0, 9.65, 0.025, 0.35, 0.025)
    Name("Bt20")
    Join("Bt19", "Bt20")def Tub(x, y, z, dim_x, dim_y, dim_z):
    bpy.ops.mesh.primitive_cylinder_add(location=(x, y, z))
    bpy.ops.transform.resize(value=(dim_x, dim_y, dim_z))
    Name("Tuuub")def Pieds():
    Pied(1.8, 0, 0, 0.1, 0.1, 0.05)
    Name("Pie1")
    Pied(-1.8, 0, 0, 0.1, 0.1, 0.05)
    Name("Pie2")
    Join("Pie1", "Pie2")
    Pied(0, 1.8, 0, 0.1, 0.1, 0.05)
    Name("Pie3")
    Join("Pie2", "Pie3")
    Pied(0, -1.8, 0, 0.1, 0.1, 0.05)
    Name("Pie4")
    Join("Pie3", "Pie4")
    Boite3(1.8, 0, 0.35, 0.05, 0.05, 0.35)
    Name("Bt21")
    Join("Pie4", "Bt21")
    Boite3(-1.8, 0, 0.35, 0.05, 0.05, 0.35)
    Name("Bt22")
    Join("Bt21", "Bt22")
    Boite3(0, 1.8, 0.35, 0.05, 0.05, 0.35)
    Name("Bt23")
    Join("Bt22", "Bt23")
    Boite3(0, -1.8, 0.35, 0.05, 0.05, 0.35)
    Name("Bt24")
    Join("Bt23", "Bt24")
    Boite3(1.1, 0, 0.65, 0.75, 0.05, 0.05)
    Name("Bt25")
    Join("Bt24", "Bt25")
    Boite3(-1.1, 0, 0.65, 0.75, 0.05, 0.05)
    Name("Bt26")
    Join("Bt25", "Bt26")
    Boite3(0, 1.1, 0.65, 0.05, 0.75, 0.05)
    Name("Bt27")
    Join("Bt26", "Bt27")
    Boite3(0, -1.1, 0.65, 0.05, 0.75, 0.05)
    Name("Bt28")
    Join("Bt27", "Bt28")
    Boite3(0, 0, 0.65, 0.35, 0.35, 0.05)
    Name("Bt29")
    Join("Bt28", "Bt29")def StrucVerNass():
    Boite3(0.325, 0.325, 5.6, 0.025, 0.025, 5)
    Name("Bt30")
    Boite3(-0.325, 0.325, 5.6, 0.025, 0.025, 5)
    Name("Bt31")
    Join("Bt30", "Bt31")
    Boite3(0.325, -0.325, 5.6, 0.025, 0.025, 5)
    Name("Bt32")
    Join("Bt31", "Bt32")
    Boite3(-0.325, -0.325, 5.6, 0.025, 0.025, 5)
    Name("Bt33")
    Join("Bt32", "Bt33")
    Structure1()
    Name("Strc1")
    Join("Bt33", "Strc1")
    Structure2()
    Name("Strc2")
    Join("Strc1", "Strc2")
    Structure3()
    Name("Strc3")
    Join("Strc2", "Strc3")
    Structure4()
    Name("Strc4")
    Join("Strc3", "Strc4")
    Structure5()
    Name("Strc5")
    Join("Strc4", "Strc5")
    Boite3(0, 0, 10.6, 0.9, 3.5, 0.05)
    Name("Bt34")
    Join("Strc5", "Bt34")
    Boite3(0.875, 3.475, 11.1, 0.025, 0.025, 0.5)
    Name("Bt35")
    Join("Bt34", "Bt35")
    Boite3(-0.875, 3.475, 11.1, 0.025, 0.025, 0.5)
    Name("Bt36")
    Join("Bt35", "Bt36")
    Boite3(0.875, -3.475, 11.1, 0.025, 0.025, 0.5)
    Name("Bt37")
    Join("Bt36", "Bt37")
    Boite3(-0.875, -3.475, 11.1, 0.025, 0.025, 0.5)
    Name("Bt38")
    Join("Bt37", "Bt38")
    Boite3(0.875, 0, 11.6, 0.025, 3.5, 0.025)
    Name("Bt39")
    Join("Bt38", "Bt39")
    Boite3(-0.875, 0, 11.6, 0.025, 3.5, 0.025)
    Name("Bt40")
    Join("Bt39", "Bt40")
    Boite3(0.875, 0, 11.6, 0.025, 3.5, 0.025)
    Name("Bt41")
    Join("Bt40", "Bt41")
    Boite3(0, 3.475, 11.6, 0.9, 0.025, 0.025)
    Name("Bt42")
    Join("Bt41", "Bt42")
    Boite3(0, -3.475, 11.6, 0.9, 0.025, 0.025)
    Name("Bt43")
    Join("Bt42", "Bt43")print(
    "-----------------------------------------------Tree_flower()----------------------------------------------"
)def Cercle(x, y, z, dim_x, dim_y, dim_z):
    bpy.ops.mesh.primitive_cylinder_add(location=(x, y, z))
    bpy.ops.transform.resize(value=(dim_x, dim_y, dim_z))def Tige(x, y, z, dim_x, dim_y, dim_z):
    bpy.ops.mesh.primitive_cylinder_add(location=(x, y, z))
    bpy.ops.transform.resize(value=(dim_x, dim_y, dim_z))def Tube(x, y, z, dim_x, dim_y, dim_z):
    bpy.ops.mesh.primitive_cylinder_add(location=(x, y, z))
    bpy.ops.transform.resize(value=(dim_x, dim_y, dim_z))def Pistil():
    Tube(0, 0, 10, 0.1, 0.1, 0.4)
    Name("Tub1")
    Tube(0, 0, 9.7, 0.12, 0.12, 0.4)
    Name("Tub2")
    Join("Tub1", "Tub2")
    Tube(0, 0, 9.2, 0.14, 0.14, 0.4)
    Name("Tub3")
    Join("Tub2", "Tub3")
    Tube(0, 0, 8.7, 0.16, 0.16, 0.4)
    Name("Tub4")
    Join("Tub3", "Tub4")
    Tube(0, 0, 8.2, 0.18, 0.18, 0.4)
    Name("Tub5")
    Join("Tub4", "Tub5")
    Tube(0, 0, 7.7, 0.2, 0.2, 0.4)
    Name("Tub6")
    Join("Tub5", "Tub6")
    Tube(0, 0, 7.2, 0.22, 0.22, 0.4)
    Name("Tub7")
    Join("Tub6", "Tub7")
    Tube(0, 0, 6.7, 0.24, 0.24, 0.4)
    Name("Tub8")
    Join("Tub7", "Tub8")
    Tube(0, 0, 6.2, 0.26, 0.26, 0.4)
    Name("Tub9")
    Join("Tub8", "Tub9")print(
    "-----------------------------------------------Tree_Psych()----------------------------------------------"
)def Base2(x, y, z, dim_x, dim_y, dim_z):
    bpy.ops.mesh.primitive_cube_add(location=(x, y, z))
    bpy.ops.transform.resize(value=(dim_x, dim_y, dim_z))def Branche(x, y, z, dim_x, dim_y, dim_z):
    bpy.ops.mesh.primitive_cylinder_add(location=(x, y, z))
    bpy.ops.transform.resize(value=(dim_x, dim_y, dim_z))
    bpy.ops.transform.rotate(
        value=math.pi / 3, axis=(0, 1, 0), constraint_axis=(False, True, False)
    )def Branche2(x, y, z, dim_x, dim_y, dim_z):
    bpy.ops.mesh.primitive_cylinder_add(location=(x, y, z))
    bpy.ops.transform.resize(value=(dim_x, dim_y, dim_z))
    bpy.ops.transform.rotate(
        value=math.pi / 6, axis=(1, 0, 0), constraint_axis=(True, False, False)
    )def Branche3(x, y, z, dim_x, dim_y, dim_z):
    bpy.ops.mesh.primitive_cylinder_add(location=(x, y, z))
    bpy.ops.transform.resize(value=(dim_x, dim_y, dim_z))
    bpy.ops.transform.rotate(
        value=math.pi / 2.7, axis=(0, 1, 0), constraint_axis=(False, True, False)
    )def Branche4(x, y, z, dim_x, dim_y, dim_z):
    bpy.ops.mesh.primitive_cylinder_add(location=(x, y, z))
    bpy.ops.transform.resize(value=(dim_x, dim_y, dim_z))
    bpy.ops.transform.rotate(
        value=math.pi / 1.3, axis=(0, 1, 0), constraint_axis=(False, True, False)
    )def Parlor1():
    Conex(-0.6, 0, 9.25, 1.5, 1.5, 0.2, 0.2, 0.2, 2.3)
    Name("Parlor1")def Parlor2():
    Conex(-0.1, 0, 10, 1.5, 1.5, 0.4, 0.4, 0.4, 1.2)
    Name("Parlor2")print(
    "-----------------------------------------------Tree_root()----------------------------------------------"
)def Pal():
    Cylindre1(0, 0, 5, 0.05, 0.05, 5)
    Name("Cyl1")
    Cylindre(0.5, 0.025, 3, 0.05, 0.05, 3)
    Name("Cyl2")
    Join("Cyl1", "Cyl2")
    Cylindre1(0.025, 0.5, 3.5, 0.02, 0.02, 3.5)
    Name("Cyl3")
    Join("Cyl2", "Cyl3")
    Cylindre1(0.075, 0.075, 4.5, 0.06, 0.06, 4.5)
    Name("Cyl4")
    Join("Cyl3", "Cyl4")
    Cylindre1(0.6, 0.6, 3, 0.04, 0.04, 3)
    Name("Cyl5")
    Join("Cyl4", "Cyl5")
    Cylindre1(-0.8, 0.08, 4.5, 0.05, 0.05, 4.5)
    Name("Cyl6")
    Join("Cyl5", "Cyl6")
    Cylindre1(-0.4, -0.5, 3.75, 0.035, 0.035, 3.75)
    Name("Cyl7")
    Join("Cyl6", "Cyl7")
    Cylindre1(0, -0.3, 3, 0.02, 0.02, 3)
    Name("Cyl8")
    Join("Cyl7", "Cyl8")
    Cylindre1(-0.4, -0.35, 5.5, 0.05, 0.05, 5.5)
    Name("Cyl9")
    Join("Cyl8", "Cyl9")
    Cylindre1(-0.375, -0.25, 5, 0.08, 0.08, 3.5)
    Name("Cyl10")
    Join("Cyl9", "Cyl10")
    Cylindre1(-0.35, -0.25, 2.75, 0.1, 0.1, 2.75)
    Name("Cyl11")
    Join("Cyl10", "Cyl11")
    Cylindre1(-0.5, -0.5, 2, 0.15, 0.15, 2)
    Name("Cyl12")
    Join("Cyl11", "Cyl12")
    Cylindre1(-0.5, 0.5, 1, 0.2, 0.2, 1)
    Name("Cyl13")
    Join("Cyl12", "Cyl13")
    Cylindre1(0.3, 0.35, 1.5, 0.18, 0.18, 1.5)
    Name("Cyl14")
    Join("Cyl13", "Cyl14")---------------------------------------------------Fonctions Arbres----------------------------------------------
def Tree_ant(x=0, y=0, z=0):
    Ant_Sec()
    Name("Ant_Sec")
    Socle(0, 0, 0, 1.8, 1.8, 0.1)
    Name("Socle")
    Join("Ant_Sec", "Socle")
    Name("Tree_ant")
    Place_obj("Tree_ant", x, y, z)def Tree_scout(x=0, y=0, z=0):
    Fondation(0, 0, 0.6, 0.75, 0.75, 0.6)
    Name("Fond")
    Boite6(0, 0, 7, 0.05, 0.1, 7)
    Name("Bwit6")
    Join("Fond", "Bwit6")
    Cabine()
    Name("Cabine")
    Join("Bwit6", "Cabine")
    Boite6(0, 0, 0, 1.8, 1.8, 0.01)
    Name("Bwit7")
    Join("Cabine", "Bwit7")
    Name("Tree_scout")
    Place_obj("Tree_scout", x, y, z)def Tree_scope(x=0, y=0, z=0):
    Arete_sol()
    Name("AretSol")
    Charp()
    Name("Charp")
    Join("AretSol", "Charp")
    Ball(0, -5.7, 10, 0.75, 0.75, 0.75)
    Name("Ball")
    Join("Charp", "Ball")
    Cone(0, -5.7, 9.165, 0.25, 0.25, 0.25)
    Name("Cone")
    Join("Ball", "Cone")
    Cam(0, -5.8, 8.95, 0.2, 0.35, 0.125)
    Name("Cam")
    Join("Cone", "Cam")
    Obj(0, -6.15, 8.95, 0.07, 0.07, 0.1)
    Name("Obj")
    Join("Cam", "Obj")
    Poid_sol(0, 0, 0, 0.1, 0.1, 1)
    Name("PoidSol")
    Join("Obj", "PoidSol")
    Name("Tree_scope")
    Place_obj("Tree_scope", x, y, z)def Tree_pass(x=0, y=0, z=0):
    StrucVerNass()
    Name("StrVrNass")
    Tub(0, 0, 11.8, 0.5, 0.5, 1.25)
    Name("Tuub")
    Join("StrVrNass", "Tuub")
    Pieds()
    Name("Pieds")
    Join("Tuub", "Pieds")
    Name("Tree_pass")
    Place_obj("Tree_pass", x, y, z + 0.7)def Tree_flower(x=0, y=0, z=0):
    Cercle(0, 0, 0.05, 1.6, 1.6, 0.1)
    Name("Cerc")
    Tige(0, 0, 5, 0.05, 0.05, 5)
    Name("Tig")
    Join("Cerc", "Tig")
    Pistil()
    Name("Pist")
    Join("Tig", "Pist")
    Boite2(0, 0, 0, 1.8, 1.8, 0.05)
    Name("Boit2")
    Join("Pist", "Boit2")
    Name("Tree_flower")
    Place_obj("Tree_flower", x, y, z)def Tree_psych(x=0, y=0, z=0):
    Tube(0, 0, 5, 0.03, 0.03, 5)
    Name("Tube")
    Branche(0.1, 0, 7, 0.02, 0.02, 0.3)
    Name("Branch1")
    Join("Tube", "Branch1")
    Branche2(0, -0.2, 8, 0.02, 0.02, 0.5)
    Name("Branch2")
    Join("Branch1", "Branch2")
    Branche3(0.15, 0, 9.5, 0.02, 0.02, 0.2)
    Name("Branch3")
    Join("Branch2", "Branch3")
    Branche4(-0.25, 0, 9, 0.02, 0.02, 0.4)
    Name("Branch4")
    Join("Branch3", "Branch4")
    Parlor1()
    Name("Parlor1")
    Join("Branch4", "Parlor1")
    Parlor2()
    Name("Parlor2")
    Join("Parlor1", "Parlor2")
    Sphere(0.1, -0.55, 8.3, 0.12, 0.12, 0.12)
    Name("Spher1")
    Join("Parlor2", "Spher1")
    Sphere(-0.1, -0.5, 8.2, 0.05, 0.05, 0.05)
    Name("Spher2")
    Join("Spher1", "Spher2")
    Sphere(0.5, 0, 9.5, 0.2, 0.2, 0.2)
    Name("Spher3")
    Join("Spher2", "Spher3")
    Base2(0, 0, 0, 1.8, 1.8, 0.05)
    Name("Base")
    Join("Spher3", "Base")
    Name("Tree_psych")
    Place_obj("Tree_psych", x, y, z)def Tree_root(x=0, y=0, z=0):
    Pal()
    Name("Pal")
    Boite4(0, 0, 0, 1.8, 1.8, 0.05)
    Name("Boite4")
    Join("Pal", "Boite4")
    Name("Tree_root")
    Place_obj("Tree_root", x, y, z)LISTE ARBRES
L_TREE = [
    Tree_ant,
    Tree_scout,
    Tree_scope,
    Tree_pass,
    Tree_flower,
    Tree_psych,
    Tree_root,
]def MIX_TREE(x=0, y=0, z=0, num=0):
    NB = random.randint(0, 6)
    L_TREE[NB]()
    Name(name_tree(num))
    Place_obj(name_tree(num), x, y, z)def PLACE_TREE(board_to_redraw):
    i = 0
    while i < len(board_to_redraw):
        if board[i] == ".":
            if int(board_to_redraw[i]) == 0:
                select_cube(name_cube(i))
                bpy.ops.view3d.snap_cursor_to_selected()
                MIX_TREE(x=0, y=0, z=0)
                bpy.ops.view3d.snap_selected_to_cursor(use_offset == False)Parois
def Cloison(o, p, q, r, s, t):
    bpy.ops.mesh.primitive_cube_add(location=(o, p, q))
    bpy.ops.transform.resize(value=(r, s, t))
    bpy.ops.transform.rotate(
        value=math.pi / 4, axis=(0, 0, 1), constraint_axis=(False, False, True)
    )def Paroi(x=0, y=0, z=0):
    Cloison(x, y, z + 1.8, 2.55, 0.05, 1.8)
    Name("Paroi0")Paroi(0,0,0)
GAME OF LIFE-------------------GAME OF LIFE-------------------GAME OF LIFE-------------------GAME OF LIFE--------------------------
board = [] keyframe = 0 move_length = 5
def create_board(board_width, board_height, size_cube):
    i = 0
    j = 1
    while i < board_height * board_width:
        if (
            j == 1
            or j == board_height
            or i % board_width == 0
            or i % board_width == board_width - 1
        ):
            bpy.ops.mesh.primitive_cube_add(
                radius=size_cube / 2000,
                location=((i % board_width) * size_cube, j * size_cube, 100),
            )bpy.ops.transform.resize(value=(0.1,0.1,1.5))
            bpy.ops.mesh.primitive_cube_add(
                radius=size_cube / 2000,
                location=((i % board_width) * size_cube, j * size_cube, 0),
            )
            Name("CubeV")
        else:
            if random.randint(1, 3) == 1:
                MIX_CUB((i % board_width) * size_cube, j * size_cube, 0)
                bpy.ops.mesh.primitive_cube_add(
                    radius=size_cube / 2,
                    location=((i % board_width) * size_cube, j * size_cube, 100),
                )
            else:
                bpy.ops.mesh.primitive_cube_add(
                    radius=size_cube / 200,
                    location=((i % board_width) * size_cube, j * size_cube, 100),
                )
                MIX_CUB((i % board_width) * size_cube, j * size_cube, 0)
                bpy.ops.transform.resize(value=(1 / 100, 1 / 100, 1 / 100))
        if i % board_width == board_width - 1:
            j += 1
        i += 1-------------------------Nomination des Cubes-----------------------------------------
def name_tree(j):
    if j == 0:
        name_of_cube = "Tree"
    elif j < 10:
        name_of_cube = "Tree.00" + str(j)
    elif j < 100:
        name_of_cube = "Tree.0" + str(j)
    elif j < 1000:
        name_of_cube = "Tree." + str(j)
    return name_of_cubedef name_cube(j):
    if j == 0:
        name_of_cube = "Cube"
    elif j < 10:
        name_of_cube = "Cube.00" + str(j)
    elif j < 100:
        name_of_cube = "Cube.0" + str(j)
    elif j < 1000:
        name_of_cube = "Cube." + str(j)
    return name_of_cubedef name_cubeV(j):
    if j == 0:
        name_of_cube = "CubeV"
    elif j < 10:
        name_of_cube = "CubeV.00" + str(j)
    elif j < 100:
        name_of_cube = "CubeV.0" + str(j)
    elif j < 1000:
        name_of_cube = "CubeV." + str(j)
    return name_of_cube-------------------------Selection des Cubes-----------------------------------------
def select_cube(cube_name):
    bpy.ops.object.select_all(action="DESELECT")
    bpy.ops.object.select_pattern(pattern=cube_name)-------------------------Retrecissement-----------------------------------------
def shrink(number_to_shrink):bpy.context.scene.frame_current = move_number * move_length select_cube(name_cube(number_to_shrink)) bpy.ops.anim.keyframe_insert_menu(type = “Scaling”) bpy.context.scene.frame_current = (move_number + 1) * move_length
    select_cube(name_cube(number_to_shrink))
    scene.objects.active = bpy.data.objects[name_cube(number_to_shrink)]
    bpy.ops.transform.resize(value=(0.01, 0.01, 0.01))bpy.ops.anim.keyframe_insert_menu(type = “Scaling”) bpy.context.scene.frame_current = move_number
def shrinkV(number_to_shrink):bpy.context.scene.frame_current = move_number * move_length select_cube(name_cube(number_to_shrink)) bpy.ops.anim.keyframe_insert_menu(type = “Scaling”) bpy.context.scene.frame_current = (move_number + 1) * move_length
    select_cube(name_cubeV(number_to_shrink))
    scene.objects.active = bpy.data.objects[name_cubeV(number_to_shrink)]
    bpy.ops.transform.resize(value=(0.01, 0.01, 0.01))bpy.ops.anim.keyframe_insert_menu(type = “Scaling”) bpy.context.scene.frame_current = move_number
def shrinkT(number_to_shrink):bpy.context.scene.frame_current = move_number * move_length select_cube(name_cube(number_to_shrink)) bpy.ops.anim.keyframe_insert_menu(type = “Scaling”) bpy.context.scene.frame_current = (move_number + 1) * move_length
    select_cube(name_cube(number_to_shrink))
    scene.objects.active = bpy.data.objects[name_cube(number_to_shrink)]
    bpy.ops.transform.resize(value=(0.5, 0.5, 0.5))bpy.ops.anim.keyframe_insert_menu(type = “Scaling”) bpy.context.scene.frame_current = move_number
def shrinkTV(number_to_shrink):bpy.context.scene.frame_current = move_number * move_length select_cube(name_cube(number_to_shrink)) bpy.ops.anim.keyframe_insert_menu(type = “Scaling”) bpy.context.scene.frame_current = (move_number + 1) * move_length
    select_cube(name_cubeV(number_to_shrink))
    scene.objects.active = bpy.data.objects[name_cubeV(number_to_shrink)]
    bpy.ops.transform.resize(value=(0.5, 0.5, 0.5))bpy.ops.anim.keyframe_insert_menu(type = “Scaling”) bpy.context.scene.frame_current = move_number
-------------------------Agrandissement-----------------------------------------
def grow(number_to_grow):bpy.context.scene.frame_current = move_number * move_length select_cube(name_cube(number_to_grow)) bpy.ops.anim.keyframe_insert_menu(type = “Scaling”) bpy.context.scene.frame_current = (move_number + 1) * move_length
    select_cube(name_cube(number_to_grow))
    scene.objects.active = bpy.data.objects[name_cube(number_to_grow)]
    bpy.ops.transform.resize(value=(100, 100, 100))bpy.ops.anim.keyframe_insert_menu(type = “Scaling”) bpy.context.scene.frame_current = move_number
def growV(number_to_grow):bpy.context.scene.frame_current = move_number * move_length select_cube(name_cube(number_to_grow)) bpy.ops.anim.keyframe_insert_menu(type = “Scaling”) bpy.context.scene.frame_current = (move_number + 1) * move_length
    select_cube(name_cubeV(number_to_grow))
    scene.objects.active = bpy.data.objects[name_cubeV(number_to_grow)]
    bpy.ops.transform.resize(value=(100, 100, 100))bpy.ops.anim.keyframe_insert_menu(type = “Scaling”) bpy.context.scene.frame_current = move_number
def growT(number_to_grow):bpy.context.scene.frame_current = move_number * move_length select_cube(name_cube(number_to_grow)) bpy.ops.anim.keyframe_insert_menu(type = “Scaling”) bpy.context.scene.frame_current = (move_number + 1) * move_length
    select_cube(name_cube(number_to_grow))
    scene.objects.active = bpy.data.objects[name_cube(number_to_grow)]
    bpy.ops.transform.resize(value=(2, 2, 2))bpy.ops.anim.keyframe_insert_menu(type = “Scaling”) bpy.context.scene.frame_current = move_number
def growTV(number_to_grow):bpy.context.scene.frame_current = move_number * move_length select_cube(name_cube(number_to_grow)) bpy.ops.anim.keyframe_insert_menu(type = “Scaling”) bpy.context.scene.frame_current = (move_number + 1) * move_length
    select_cube(name_cubeV(number_to_grow))
    scene.objects.active = bpy.data.objects[name_cubeV(number_to_grow)]
    bpy.ops.transform.resize(value=(2, 2, 2))bpy.ops.anim.keyframe_insert_menu(type = “Scaling”) bpy.context.scene.frame_current = move_number
-------------------------Verification des voisins-----------------------------------------
scene = bpy.context.scenedef neighboursNB(num, width, size):
    total = (
        count(num + 1, size)
        + count(num - 1, size)
        + count(num + width, size)
        + count(num - width, size)
        + count(num - width + 1, size)
        + count(num - width - 1, size)
        + count(num + width - 1, size)
        + count(num + width + 1, size)
    )
    return totaldef neighboursNBT(num, width, size):
    total = (
        count(num + 1, size)
        + count(num - 1, size)
        + count(num + width, size)
        + count(num - width, size)
        + count(num - width + 1, size)
        + count(num - width - 1, size)
        + count(num + width - 1, size)
        + count(num + width + 1, size)
        + count_Tree(num + 1, size)
        + count_Tree(num - 1, size)
        + count_Tree(num + width, size)
        + count_Tree(num - width, size)
        + count_Tree(num - width + 1, size)
        + count_Tree(num - width - 1, size)
        + count_Tree(num + width - 1, size)
        + count_Tree(num + width + 1, size)
    )
    return totaldef count(j, size):
    scene.objects.active = bpy.data.objects[name_cube(j)]
    if bpy.context.active_object.dimensions == Vector([size, size, size]):
        return 1
    else:
        return 0def count_Tree(j, size):
    scene.objects.active = bpy.data.objects[name_cube(j)]
    if bpy.context.active_object.dimensions == Vector(
        [size / 200, size / 200, size / 200]
    ):
        return 1
    else:
        return 0def gameOfLifeWoodstock(board_width, board_height, size):
    i = 0
    while i < (board_width * board_height):
        scene.objects.active = bpy.data.objects[name_cube(i)]
        if bpy.context.active_object.dimensions == Vector([size, size, size]):
            if (neighboursNBT(i, board_width, size) < 2) or (
                neighboursNBT(i, board_width, size) > 3
            ):
                shrink(i)
                shrinkV(i)
        scene.objects.active = bpy.data.objects[name_cube(i)]
        if bpy.context.active_object.dimensions == Vector(
            [size / 100, size / 100, size / 100]
        ):
            if neighboursNBT(i, board_width, size) == 3:
                grow(i)
                growV(i)
        i = i + 1def gameOfLifeWallStreet(board_width, board_height, size):
    i = 0
    while i < (board_width * board_height):
        scene.objects.active = bpy.data.objects[name_cube(i)]
        if bpy.context.active_object.dimensions == Vector([size, size, size]):
            if (neighboursNB(i, board_width, size) < 2) or (
                neighboursNB(i, board_width, size) > 4
            ):
                shrink(i)
                shrinkV(i)
        scene.objects.active = bpy.data.objects[name_cube(i)]
        if bpy.context.active_object.dimensions == Vector(
            [size / 100, size / 100, size / 100]
        ):
            if neighboursNB(i, board_width, size) == 3:
                grow(i)
                growV(i)Passerelle
                scene.objects.active = bpy.data.objects[name_cube(i)]
                tempo = bpy.context.active_object.location
                EscPass6(x=0, y=0, z=0)
                bpy.context.active_object.location.x = tempo.x
                bpy.context.active_object.location.y = tempo.y
        i = i + 1def makeTrees(board_width, board_height, size):
    i = 0
    while i < (board_width * board_height):
        scene.objects.active = bpy.data.objects[name_cube(i)]
        if bpy.context.active_object.dimensions == Vector(
            [size / 100, size / 100, size / 100]
        ):
            if neighboursNB(i, board_width, size) < 2:
                shrinkTV(i)
                shrinkT(i)
                scene.objects.active = bpy.data.objects[name_cube(i)]
                tmp = scene.objects.active.location
                MIX_TREE(tmp[0], tmp[1], tmp[2] - 100, i)
        i = i + 1def destroyTrees(board_width, board_height, size):
    i = 0
    while i < (board_width * board_height):
        scene.objects.active = bpy.data.objects[name_cube(i)]
        if bpy.context.active_object.dimensions == Vector(
            [size / 200, size / 200, size / 200]
        ):
            print("CACA")
            print(i)
            if neighboursNBT(i, board_width, size) > 3:
                growTV(i)
                growT(i)
                bpy.ops.object.select_all(action="DESELECT")
                scene.objects[name_tree(i)].select = True
                bpy.ops.object.delete(use_global=False)Remplacement par une paroie
                scene.objects.active = bpy.data.objects[name_cube(i)]
                Paroi(
                    bpy.context.active_object.location.x,
                    bpy.context.active_object.location.y,
                    0,
                )
        i = i + 1def deadTrees(board_width, board_height, size):
    i = 0
    while i < (board_width * board_height):
        scene.objects.active = bpy.data.objects[name_cube(i)]
        if bpy.context.active_object.dimensions == Vector(
            [size / 200, size / 200, size / 200]
        ):
            if neighboursNBT(i, board_width, size) > 6:
                growTV(i)
                growT(i)
                bpy.ops.object.select_all(action="DESELECT")
                scene.objects[name_tree(i)].select = True
                bpy.ops.object.delete(use_global=False)
        i = i + 1Price_Generator
def price_generator(board_width=15, board_height=15, size=3.6, NbMoves=5):
    bpy.ops.object.select_all(action="SELECT")
    bpy.ops.object.delete(use_global=False)
    create_board(board_width, board_height, size)
    move_number = 0
    while move_number < NbMoves:
        bpy.context.scene.frame_current = move_number
        if move_number % 2 == 0:
            makeTrees(board_width, board_height, size)
            gameOfLifeWoodstock(board_width, board_height, size)
        else:
            destroyTrees(board_width, board_height, size)
            gameOfLifeWallStreet(board_width, board_height, size)
        deadTrees(board_width, board_height, size)
        move_number += 1price_generator(30, 20, 3.6, 1)makeTrees(15, 15, 3.6) gameOfLifeWoodstock(15, 15, 3.6) destroyTrees(15, 15, 3.6) gameOfLifeWallStreet(15, 15, 3.6) deadTrees(15,15,3.6)